<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<!--
			1.多重判断，尽早 return
			2.使用默认参数和解构
			3.对 所有/部分 判断使用 Array.every & Array.some
		-->
		<script type="text/javascript">
			// 1.多重判断，尽早 return
			// 让我们拓展上一个例子让它包含两个条件:
			// 如果没有传入参数 fruit，抛出错误
			// 接受 quantity 参数，并且在 quantity 大于 10 时打印出来
			// function test(fruit,quantity){
			// 	const redFruits=['apple','strawberry','cherry','cranberries'];
			// 	if(!fruit) throw new Error('no fruit');
			// 	if(redFruits.includes(fruit)){
			// 		console.log('red');
			// 		if(quantity>10){
			// 			console.log('big quantity');
			// 		}
			// 	}
			// }
			// test(null);
			// test('apple');
			// test('apple',20);
			
			// 我们可以通过 倒置判断条件 & 尽早return 进一步减少if嵌套。
			// function test(fruit,quantity){
			// 	const redFruits=['apple','strawberry','cherry','cranberries'];
			// 	if(!fruit) throw new Error('no fruit');
			// 	if(!redFruits.includes(fruit)) return;
			// 	console.log('red');
			// 	if(quantity>10){
			// 		console.log('big quantity');
			// 	}
			// }
			// test(null);
			// test('apple');
			// test('apple',20);
			
			
			// 2.使用默认参数和解构
			// function test2(fruit){
			// 	if(fruit && fruit.name){
			// 		console.log(fruit.name)
			// 	}else{
			// 		console.log('unknown');
			// 	}
			// }
			// // test2();//unknown
			// // test2({});//unknown
			// test2({name:'apple',color:'red'});//apple
			
			// 看上面这个例子，我们想打印 fruit 对象中可能存在的 name 属性。否则我们将打印unknown。我们可以通过默认参数以及解构从而避免判断条件 fruit && fruit.name
			// function test2({name}={}){
			// 	console.log(name||'unknown')
			// };
			// // test2();//unknown
			// // test2({});//unknown
			// test2({name:'apple',color:'red'});//apple
			// 由于我们只需要 name 属性，我们可以用 {name} 解构出参数，然后我们就能使用变量 name 代替 fruit.name。
			// 我们也需要声明空对象 {} 作为默认值。如果我们不这么做，当执行 test(undefined) 时，你将得到一个无法对 undefined 或 null 解构的的错误。因为在 undefined 中没有 name 属性。
			
		
			
			// 3.对 所有/部分 判断使用 Array.every & Array.some
			const fruits = [
			    { name: 'apple', color: 'red' },
			    { name: 'banana', color: 'yellow' },
			    { name: 'grape', color: 'purple' }
			  ];
			
			// function test3() {
			//   let isAllRed = true;
			//   // 条件：所有水果都是红色
			//   for (let f of fruits) {
			//     if (!isAllRed) break;
			//     isAllRed = (f.color == 'red');
			//   }
			// 
			//   console.log(isAllRed); // false
			// }
			
			function test3(){
				// const isAllRed=fruits.every(f=>f.color=='red');
				// console.log(isAllRed); // false
				
				const isAllRed=fruits.some(f=>f.color=='red');
				console.log(isAllRed);//true
			}
		</script>
	</body>
</html>
